"""
Craps赌博游戏
玩家摇两颗色子 如果第一次摇出7点或11点 玩家胜
如果摇出2点 3点 12点 庄家胜 其他情况游戏继续
玩家再次要色子 如果摇出7点 庄家胜
如果摇出第一次摇的点数 玩家胜
否则游戏继续 玩家继续摇色子
玩家进入游戏时有1000元的赌注 全部输光游戏结束


"""

from random import randint

money = 1000
while money > 0:              # 玩家有钱时进入摇色子游戏, 否则游戏结束
    print('你的总资产为:', money)
    needs_go_on = False
    while True:
        debt = int(input('请下注: '))
        if debt > 0 and debt <= money:    # 玩家输入的下注必须大于0且小于等于玩家的总资产  只有这样才会执行语句块break, 否则会一直循环
            break
    first = randint(1, 6) + randint(1, 6)    # 玩家摇两颗色子
    print('玩家摇出了%d点' % first)    # 打印玩家摇出的点数,两次随机数相加得到玩家摇出的点数
    if first == 7 or first == 11:      # 玩家摇出7点或11点 玩家胜
        print('玩家胜!')
        money += debt                   # 玩家赢得的钱加上玩家的下注
    elif first == 2 or first == 3 or first == 12:         # 玩家摇出2点或 3点或 12点 庄家胜
        print('庄家胜!')
        money -= debt                   # 庄家输掉的钱等于玩家的下注
    else:
        needs_go_on = True             # 玩家需要继续摇色子 。上面是玩家第一次摇色子的情况, 如果玩家摇出了7点或11点, 则赢钱，或者玩家摇出了2点或3点或12点, 则输钱, 如不输不赢则进入下一轮摇色子，规则变动
        print('第一轮无输赢, 玩家需要继续摇色子')

    while needs_go_on:             # 第一轮无输赢时进入第二轮摇色子, 规则。玩家摇出7点庄家胜，玩家摇出第一次摇的点数玩家胜，否则游戏继续
        current = randint(1, 6) + randint(1, 6)
        print('玩家摇出了%d点' % current)
        if current == 7:         # 玩家摇出7点庄家胜
            print('庄家胜')
            money -= debt
            needs_go_on = False    # 玩家摇出7点庄家胜, 退出第二轮摇色子
        elif current == first:    # 玩家摇出第一次摇的点数玩家胜
            print('玩家胜')
            money += debt
            needs_go_on = False    # 玩家摇出第一次摇的点数玩家胜, 退出第二轮摇色子
        else:                     # 玩家摇出其他点数, 继续第二轮摇色子  
            print('玩家继续摇色子')
            needs_go_on = True

print('你破产了, 游戏结束!')         # 玩家破产, 游戏结束，第一轮庄家赢的概率小于玩家，第二轮玩家赢的概率小于庄家，总的来说，玩家胜率小于庄家胜率约1个多点。